package wef.PW.utils;


import wef.PW.module.model.ASDU;

import java.util.ArrayList;

public class ASDUUtils {

    /**
     * 传入应用服务数据单元转换为 ASDU 对象
     * @param str
     * @return
     */
    public static ASDU APDUSToObject(String str){

        ASDU asdu = new ASDU(); // 创建应用服务单元数据对象
        asdu.setTYP(str.substring(0, 2)); // 类型标识符 00 两位
        String VSQ = str.substring(2, 4);
        asdu.setVSQ(VSQ); // 可变结构限定词 00 两位
        asdu.setCOT(str.substring(4, 8)); // 传送原因 00 00 四位
        asdu.setADR(str.substring(8, 12)); // 公共地址 00 00 四位
        asdu.setInfoAdr(str.substring(12, 18)); // 信息对象地址 00 00 00 六位 遥信遥测中叫对象1的地址
        ArrayList<String> INOT = new ArrayList<String>(); // 信息对象
        int num = RewardUtils.VsqUtils(VSQ);
        System.out.println("信息体个数:" + num);
        int INOTL = (str.length() - 18) / num;
        System.out.println("信息体长度:" + INOTL);
        for (int i = 18; i < str.length(); i += INOTL){
            INOT.add(str.substring(i, i + INOTL));
        }
        asdu.setINOT(INOT);
        return asdu;
    }
}
